package uabc.arduino.componentes;

import java.util.HashMap;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JComboBox;

import uabc.arduino.elementos.Sensor;
import uabc.arduino.elementos.TipoSensor;
import uabc.arduino.interfaces.Constantes;

public class ComboBoxTipoSensor extends JComboBox<TipoSensor> implements Observer,
		Constantes {
	private int id;
	private TipoSensor[] tipoSensores;

	public ComboBoxTipoSensor(TipoSensor[] tipoSensores, int id) {
		super(tipoSensores);
		this.tipoSensores = tipoSensores;
		this.id = id;
	}

	@Override
	public void update(Observable o, Object arg) {
		String cadena = (String) arg;
		if (cadena.startsWith("C:A:")) {
			cadena = cadena.substring(4);
			HashMap<Integer, Integer> valores = decodificar(cadena);
			Integer v = valores.get(id);
			if (v != null)
				if (v != 0)
					buscarSensor(v);
		}
	}
	
	public void buscarSensor(int idSensor) {
		for (int i = 0; i < tipoSensores.length; i++) {
			for (Sensor s : tipoSensores[i].getSensores())
				if (s.getId() == idSensor)
					setSelectedItem(tipoSensores[i]);
		}
	}

//	public void buscarSensor(int idSensor) {
//		for (Sensor[] s : sensores) {
//			for (int i = 0; i < s.length; i++) {
//				if (s[i].getId() == idSensor) {
//					buscarTipo(s[i].getTipoId());
//				}
//			}
//		}
//	}
//
//	public void buscarTipo(int idTipo) {
//		for (TipoSensor t : TIPOSSENSORES) {
//			if (t.getId() == idTipo)
//				setSelectedItem(t);
//		}
//	}

	public HashMap<Integer, Integer> decodificar(String cadena) {
		// 00=1:01=2:02=3:03=4:04=5:05=6 tipo=1
		String[] entradas = cadena.split(":");
		HashMap<Integer, Integer> mapa = new HashMap<Integer, Integer>();
		for (int i = 0; i < entradas.length; i++) {
			String[] entrada = entradas[i].split("=");
			mapa.put(Integer.parseInt(entrada[0]), Integer.parseInt(entrada[1]));
		}
		return mapa;
	}

}
